package com.flydog.mall.service;

import com.flydog.mall.dto.FileUploadDto;
import org.springframework.web.multipart.MultipartFile;

/**
 * 文件管理
 * @author AI
 */
public interface FileManageService {
    /**
     * 上传文件。在minio中文件存储的路径为/moduleName/instanceName/contentName.png
     * @param file 上传的文件
     * @param moduleName 模块名称，文件所属的模块的名称。如品牌模块,则moduleName为"brand"
     * @param instanceName 实体名称，模块下某实体的名称。如品牌foo的实体名称为"foo"
     * @param contentName 文件内容名称，实体下该文件的内容名称。如品牌foo的logo文件，则内容名称为logo
     * @return 文件上传信息
     * @throws Exception 各种异常
     */
    FileUploadDto upload(MultipartFile file, String moduleName, String instanceName, String contentName) throws Exception;

    /**
     * 删除文件
     * @param objectName 删除文件的名称
     * @throws Exception 各种异常
     */
    void delete(String objectName) throws Exception;

    /**
     * 用URL删除文件
     * @param objectUrl 删除文件的URL
     * @throws Exception 各种异常
     */
    void deleteByUrl(String objectUrl) throws Exception;
}
